﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MJD.Transaccional.AccesoDatos.Interfaces;

namespace MJD.Transaccional.AccesoDatos.Fabricas
{
    /// <summary>
    /// Fabrica abstracta para todas las fabricas que implementa los dao's
    /// </summary>
    public abstract class FabricaDao
    {
        /// <summary>
        /// Metodo que obtiene la fabrica de los dao's
        /// </summary>
        /// <returns></returns>
        public static FabricaDao ObtenerManejador()
        {
            return new FabricaDaoNHibernateMySql();
        }


        /// <summary> Metodo que obtiene el dao para las operaciones sobre la entidad aseguradora </summary>
        /// <returns>implmentacion de IDAOAseguradora para el manejador seleccionado</returns>
        public abstract IDaoAseguradora ObtenerDaoAseguradora();


        /// <summary> Metodo que obtiene el dao para las operaciones sobre la entidad sucursal </summary>
        /// <returns>implmentacion de IDaoSucursal para el manejador seleccionado</returns>
        public abstract IDaoSucursal ObtenerDaoSucursal();
        

        /// <summary> Metodo que obtiene el dao para las operaciones sobre la entidad ciudad </summary>
        /// <returns>implmentacion de IDaoCiudad para el manejador seleccionado</returns>
        public abstract IDaoCiudad ObtenerDaoCiudad();
        

        /// <summary> Metodo que obtiene el dao para las operaciones sobre la entidad estado </summary>
        /// <returns>implmentacion de IDaoEstado para el manejador seleccionado</returns>
        public abstract IDaoEstado ObtenerDaoEstado();


        /// <summary> Metodo que obtiene el dao para las operaciones sobre la entidad ramo </summary>
        /// <returns>implmentacion de IDaoRamo para el manejador seleccionado</returns>
        public abstract IDaoRamo ObtenerDaoRamo();


        /// <summary> Metodo que obtiene el dao para las operaciones sobre la entidad causa </summary>
        /// <returns>implmentacion de IDaoCausa para el manejador seleccionado</returns>
        public abstract IDaoCausa ObtenerDaoCausa();
    }
}
